<?php

namespace App\System\Base\Validator;


use App\Exceptions\Customize\ParamsException;
use Validator;

/**
 * 定义基本验证器类
 * @author huwei
 */
class BaseValidator
{
    /**
     * 定义规则、错误信息
     * @var array
     */
    //规则数组
    protected $rules = [];
    //自定义信息
    protected $messages = [];
    //属性映射
    protected $attributes = [];

    //请求参数
    protected $params;

    /**
     * 初始化请求参数
     * BaseValidator constructor.
     * @param Request $request 请求参数
     */
    public function __construct()
    {
        //装载客户端传来的参数，准备验证
        $params = request()->all();
//        var_dump($params);die;
        $this->params = $params;

    }

    /**
     * 对参数执行验证，验证规则由调用该方法的类来定义
     * @return bool 验证是否成功
     * @throws ParamsException 抛出验证错误信息
     */
    public function check()
    {
        //排除获取session的情况 start
        $module = request()->module;
        if ($module == 'session'){
            return true;
        }
        //排除获取session的情况 end
        $validate = Validator::make($this->params, $this->rules, $this->messages, $this->attributes);
        if ($validate->fails()) {
            throw new ParamsException([
                'message' => $validate->errors()->first()
            ]);
        }

        return true;
    }
}
   
